package cn.example.swagger_demo.swagger;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Account :SwaggerConfig.java
 * @Author :T016729
 * @Date :2022/6/16
 * @Description :# swagger 配置类
 */
@Configuration //声明该类为配置类
@EnableSwagger2 //声明启动Swagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi_A() {
        return new Docket(DocumentationType.SWAGGER_2) // DocumentationType.SWAGGER_2 固定的，代表swagger2
                .apiInfo(apiInfo_A())// 用于生成API信息
                .groupName("应用接口") //配置文档分组-名称
                .select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("cn.example.swagger_demo.controller.testController"))//扫描包
                .paths(PathSelectors.any())// 选择所有的API,如果你想只为部分API生成文档，可以配置这里
                .build();
    }


    private ApiInfo apiInfo_A() {
        return new ApiInfoBuilder()
                //1.接口文档标题
                .title("SwaggerUI演示")
                //2.接口文档描述内容
                .description("swagger_test_api")
                //3.项目文档迭代版本
                .version("1.0")
                // 4. 主要联系人信息（姓名name，个人主页url，邮箱email）
                .contact(new Contact("cn", "www.baidu.com", "xxxxxx@163.com"))
                //5.相关许可证信息
                .license("The CSDN License")
                //6.相关许可证链接
                .licenseUrl("www.baidu.com")
                //7.返回构建的ApiInfo对象
                .build();
    }

    @Bean
    public Docket createRestApi_B() {
        return new Docket(DocumentationType.SWAGGER_2) // DocumentationType.SWAGGER_2 固定的，代表swagger2
                .apiInfo(apiInfo_B())
                .groupName("登录接口")
                .select()
                .apis(RequestHandlerSelectors.basePackage("cn.example.swagger_demo.controller.loginController"))
                .paths(PathSelectors.any())
                .build();
    }


    private ApiInfo apiInfo_B() {
        return new ApiInfoBuilder()
                .title("SwaggerUI演示")
                .description("swagger_test_api")
                .version("1.0")
                .contact(new Contact("cn", "www.baidu.com", "xxxxxx@163.com"))
                .build();
    }


}
